When several devices make conflicting requests for shared resources, the requests must be arbitrated to determine allocation of the resources. For example, when a bus is connected to a cache, cache allocate and snoop requests may be given priority for some applications and designs. For some of these designs, these requests can arrive simultaneously. This arbitration priority is application specific and other designs may choose to have a different priority.
Self-arbitration can be used to select among high-priority requests. For example, when there is both a reload and snoop request on the bus, one can be chosen. This method delays the other request until the first request is completed, which may be a matter of several cycles. Further, a self arbitration would add an additional arbitration point and make the requestors aware of the arbitration.
Therefore, there is a need for a method of arbitration for giving priority to high-priority requests, but with a lessened delay to the high-priority requests that are not selected.